package user.persistence;

import groupby.util.Pages;

import java.util.List;

import system.model.BasicInfor;
import user.model.BrandInfor;
import user.model.Dynamic;
import user.model.Photoinfor;
import user.model.Pictures;
import user.model.Responses;
import user.model.Topic;
import user.model.UserDetial;
import user.model.Users;

public interface UsersDao {

	/**
	 * 用户登录
	 * @param email
	 * @param password
	 * @return
	 */
	Users usersLogin(String email, String password);

	/**
	 * 用户列表
	 * @return
	 */
	List getUserList(Pages pages,String email,String startTime,String endTime,int level,int able);

	/**
	 * 开通申请的用户
	 * @param id
	 * @param able
	 */
	boolean ratify(int id, int able);

	/**
	 * 删除用户
	 * @param id
	 * @return
	 */
	boolean deleteUser(int id);

	/**
	 * 获得用户信息
	 * @param id
	 * @return
	 */
	UserDetial getSingleUser(int id);
    /**
     * 
     * 更新用户信息
     * @param userDetial
     */
	void updateSingleUser(UserDetial userDetial);

	/**
	 * checkUserEmail
	 * @param email
	 * @return
	 */
	boolean checkUserEmail(String email);

	/**
	 * 添加用户
	 * @param user
	 * @return
	 */
	int addUser(Users user);

	/**
	 * 添加用户细节 
	 * @param userDetial
	 * @return
	 */
	boolean addUserDetial(UserDetial userDetial);

	/**
	 * 获得content
	 * @param categoryId
	 * @return
	 */
	BasicInfor getBasicInfor(int id);

	/**
	 * 获得  BasicInfor
	 * @param bi
	 * @return
	 */
	boolean updateBasicInfor(BasicInfor bi);

	/**
	 * 获得我关注的团购活动
	 * @param userId
	 * @return
	 */
	List attentionGroupbyList(Integer userId);

	/**
	 * 修改密码
	 * @param users
	 * @return
	 */
	boolean modifyUserPassword(Users users);

	/**
	 * 获得密码
	 * @param id
	 * @return
	 */
	List myFriendList(Pages pages,Integer id,int level);

	/**
	 * 添加好友
	 * @param id
	 * @return
	 */
	boolean addFriend(int userId,int id);

	/**
	 * 获得用户
	 * @param id
	 * @return
	 */
	Users getUsers(int id);

	/**
	 * 添加动态
	 * @param dynamic
	 */
	void addDynamic(Dynamic dynamic);
/**
 * 获得用户的详细信息
 * @param userName
 * @return
 */
	UserDetial getSingleUser(String userName);


/**
 * 获得动态信息
 * @param id
 * @return
 */
List dynamicList( Pages page, int id);
/**
 * 获得回应信息
 * @param id
 * @return
 */
List listReplay(Integer id);

/**
 * 添加回应信息
 * @param responses
 * @return
 */
boolean addReplay(Responses responses);
/**
 * 获得评论信息
 * @param pages
 * @param id
 * @return
 */
List myCriticism(Pages pages, Integer id);
/**
 * 添加相册
 * @param picture
 * @return
 */
boolean addPictures(Pictures picture);
/**
 * 获得相册列表
 * @param id
 * @return
 */
List pictureList(Pages pages,String photoName,String startDate,String endDate,Integer id,String flag,int category,String flags);
/**
 * 删除相册
 * @param picId
 * @return
 */
boolean delPictures(int picId,String path);
/**
 * 推荐相册
 * @param picId
 * @param able
 * @return
 */
boolean ratifyPic(int picId, int able);
/**
 * 获得单个相册
 * @param picId
 * @return
 */
Pictures getPictures(int picId);
/**
 * 添加图片
 * @param pi
 * @return
 */
boolean addPhoto(Photoinfor pi);
/**
 * 显示相册图片
 * @param pages
 * @param picId
 * @return
 */
List showPhotoList(Pages pages, int picId);
/**
 *回应相册图片
 * @param pages
 * @param photoId
 * @return
 */
Photoinfor criticismPhoto(Pages pages, int photoId,int picId);
/**
 * 添加品牌信息
 * @param brandInfor
 * @return
 */
boolean addBrandInfor(BrandInfor brandInfor);
/**
 * 获得品牌列表信息
 * @param picPages
 * @param id
 * @return
 */
List brandList(Pages picPages, int id);
/**
 * 获得品牌列表
 * @param pages
 * @param id
 * @return
 */
List brandInforAllList(Pages pages, Integer id);
/**
 * 获得单个品牌列表
 * @param pages
 * @param id
 * @param category
 * @return
 */
List brandSingleCategoryList(Pages pages, Integer id, int category);
/**
 * 获得单个品牌信息
 * @param brandId
 * @return
 */
BrandInfor singleBrand(int brandId);
/**
 * 添加话题
 * @param topic
 * @return
 */
boolean addTopic(Topic topic);
/**
 * 获得话题列表
 * @param pages
 * @param id
 * @return
 */
List topicList(Pages pages, Integer id,String title,String startDate,String endDate);
/**
 * 获得单个话题
 * @param topicId
 * @return
 */
Topic getTopic(int topicId);
/**
 * 更新topicCount
 */
void updateTopicCount(int topicId);
/**
 * 获得其它话题列表 
 * @param pages
 * @param userId
 * @param topicId
 * @return
 */
List topicList(Pages pages, int userId, int topicId);
/**
 * 获得品牌列表
 * @param pages
 * @param id
 * @param title
 * @param startDate
 * @param endDate
 * @return
 */
List brandInforAllList(Pages pages, Integer id, String title, String startDate,
		String endDate,int categoryId,String flag);
/**
 * 删除品牌图片　
 * @param brandId
 * @param flag
 * @return
 */
boolean delImage(int brandId, String flag,String image,String path);
/**
 * 上传品牌单个图片
 * @param brandId
 * @param flag
 * @param image
 * @return
 */
boolean uploadSingleImage(int brandId, String flag, String image);
/**
 * 更新brand信息
 * @param brandId
 * @param title
 * @param content
 * @param category
 * @return
 */
boolean modifyBrand(int brandId, String title, String content, int category,int category2);
/**
 * 推荐品牌信息
 * @param brandId
 * @param flag
 * @return
 */
boolean modifyBrand(int brandId, String flag);
/**
 * 获得推荐信息
 * @param page
 * @return
 */
List brandList(Pages page,boolean flag,String category);
/**
 * 获得单个类别的所有品牌信息
 * @param pages
 * @param id
 * @return
 */
List brandSingleCategoryList(Pages pages, Integer id,String flag);
/**
 * 获得推荐用户列表
 * @param pages
 * @param email
 * @param startTime
 * @param endTime
 * @param categoryId
 * @return
 */
List userList(Pages pages, String email, String startTime, String endTime,
		String categoryId);
/**
 * 推荐用户
 * @param userId
 * @param flag
 * @return
 */
boolean recommendUser(int userId, int flag);
/**
 * 获得推荐用户
 * @param page
 * @param level
 * @return
 */
List brandUserList(Pages page, int level,int flag);

/**
 * 获得品牌用户列表 by category
 * @param page
 * @param id
 * @return
 */
List brandUserListMore(Pages page, Integer id);
/**
 * 查找picture by category
 * @param picPages
 * @param id
 * @return
 */
List pictureListByCategory(Pages picPages, Integer id);
/**
 * 修改相册图片信息
 * @param photoinfor
 * @return
 */
boolean photoModify(Photoinfor photoinfor);
/**
 * 删除相册里的图片
 * @param photoId
 * @return
 */
boolean photoDel(int photoId,String path);
/**
 * 设图片为相册图片
 * @param picId
 * @param image
 * @return
 */
boolean pictureFace(int picId, String image);
/**
 * 关注我的人
 * @param pages
 * @param userId
 * @return
 */
List friendToMeList(Pages pages, int userId);
/**
 * 删除品牌
 * @param brandId
 * @param path
 * @return
 */
boolean delBrand(int brandId, String path);
/**
 * 删除话题
 * @param topicId
 * @return
 */
boolean delTopic(int topicId);
/**
 * 更新话题
 * @param InfortopicInfor
 * @return
 */
boolean modifyTopic(Topic InfortopicInfor);
/**
 * 修改邮箱
 * @param users
 * @return
 */
boolean modifyEmail(Users users);
/*
 * 修改相册
 */
boolean modifyPicture(Pictures pic);
/**
 * 找回密码
 * @param email
 * @return
 */
Users findUserPassword(String email);
/**
 * 删除用户所有信息
 * @param id
 * @return
 */
boolean findUserPassword(Integer id);
/**
 * 置顶
 * @param brandId
 * @param flag
 * @return
 */
boolean top(int brandId, String flag);
/**
 * 获得列表
 * @param pages
 * @param title
 * @param startTime
 * @param endTime
 * @return
 */
List menageCulmn(Pages pages, String title, String startTime, String endTime);
/**
 * 删除栏目
 * @param id
 * @return
 */
boolean delculmn(int id);
/**
 * 添加栏目
 * @param title
 * @return
 */
boolean addculmn(String title);
/**
 * 栏目列表
 * @return
 */
List culmnlist();
/**
 * 获得分类用户
 * @return
 */
List findCategoryUserList();
/**
 * 删除所有品牌
 * @param brandId
 * @return
 */
boolean delAllTopicForUser(int brandId);
/**
 * 获得关注我的人的列表
 * @param userId
 * @return
 */
int meToFriendList(int userId);
/**
 *　
 * @param userId
 * @return
 */
List friendToMe(Pages page,int userId);
   

}
